<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>ISAPI</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/ISAPI"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-ISAPI rootpage-ISAPI skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">ISAPI</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p><b>ISAPI</b> est l'<a href="Acronyme" class="mw-redirect" title="Acronyme">acronyme</a> de <b><a href="Internet_Information_Services" title="Internet Information Services">Internet Server</a> <a href="Interface_de_programmation" title="Interface de programmation">Application Programming Interface</a></b>.
</p><p>Il s'agit de l'<a href="Interface_de_programmation" title="Interface de programmation">interface de programmation</a> (ou API) de l'application <a href="Internet_Information_Services" title="Internet Information Services">IIS</a> de <a href="Microsoft" title="Microsoft">Microsoft</a>. Elle a été conçue par <i>Process Software Corporation</i>, Microsoft Corporation et un petit nombre d'autres éditeurs. L'objectif est de limiter la création de processus fils pour réduire la latence. Pour cela, ISAPI charge du code partagé depuis des <a href="Dynamic_Link_Library" title="Dynamic Link Library">DLL</a> dans le processus du serveur.
</p><p>Le désavantage d'ISAPI, comparé par exemple au <a href="Common_Gateway_Interface" title="Common Gateway Interface">CGI</a>, est que le code chargé dans le serveur compromet son <a href="Int%C3%A9grit%C3%A9_(cryptographie)" title="Intégrité (cryptographie)">intégrité</a>. Des extensions mal conçues peuvent avoir un impact sur les performances voire dans le pire des cas faire planter le serveur.
</p><p>ISAPI est principalement utilisé dans la version "WebServer" de <a href="Windows_Server_2003" title="Windows Server 2003">Windows Server 2003</a>.
</p><p>ISAPI est aussi pris en charge par <a href="Apache_HTTP_Server" title="Apache HTTP Server">Apache</a> via son module <code>mod_isapi</code> qui permet aux <a href="Application_web" title="Application web">applications web</a> écrites pour IIS de fonctionner sur Apache.
</p>
<div class="mw-heading mw-heading2"><h2 id="Mise_en_œuvre_d’ISAPI_selon_version_IIS"><span id="Mise_en_.C5.93uvre_d.E2.80.99ISAPI_selon_version_IIS"></span>Mise en œuvre d’ISAPI selon version IIS</h2></div>
<p>Lorsqu'un navigateur demande un lien de type Default.Asp, <a href="Internet_Information_Services" title="Internet Information Services">IIS</a> (w3wp.exe ou aspnet_wp.exe) intercepte la requête web et, après analyse de l'extension du fichier, le passe à l'application ISAPI de nom ssi.dll. SSI est un service géré par défaut en interne par IIS ; mais ce service peut être déplacé sous la forme d'un lien vers une <a href="Dynamic_Link_Library" title="Dynamic Link Library">bibliothèque logicielle</a> (DLL) compatible ISAPI. Ce module travaille donc de manière indépendante du serveur.
</p><p>Le plus grand désavantage d'ISAPI est l'augmentation du temps de développement par rapport à des technologies comme <a href="PHP" title="PHP">PHP</a> et ASP qui supportent nativement la gestion des sessions. Des problèmes de sécurité apparaissent aussi du fait de l'utilisation du <a href="C_(langage)" title="C (langage)">langage C</a> et de la possibilité de saturation du cache (<a href="D%C3%A9passement_de_tampon" title="Dépassement de tampon">dépassements de tampon</a>).
</p><p>Contrairement à <a href="Common_Gateway_Interface" title="Common Gateway Interface">CGI</a>, les versions ISAPI 5.0 et antérieures sont exécutées dans le même espace de travail qu’IIS. Ceci évite l'appel à de nombreuses fonctions interprocessus et le lancement d'applications externes, améliorant les performances. Malheureusement, une application ISAPI qui plante entraîne IIS avec elle. Depuis IIS 6, une application ISAPI (<a href="C_(langage)" title="C (langage)">C</a>, <a href="C%2B%2B" title="C++">C++</a>, <a href="Embarcadero_Delphi" class="mw-redirect" title="Embarcadero Delphi">Delphi</a>) est <a href="Compilateur" title="Compilateur">compilée</a> sous forme de DLL qui, après enregistrement auprès d’IIS et selon la configuration de ce dernier, peut s'exécuter dans un emplacement différent de celui d’IIS.
</p>
<div class="mw-heading mw-heading2"><h2 id="Les_types_d'applications_gérés_par_ISAPI"><span id="Les_types_d.27applications_g.C3.A9r.C3.A9s_par_ISAPI"></span>Les types d'applications gérés par ISAPI</h2></div>
<p>Il existe deux types d'ISAPI : les extensions et les filtres. Dans tous les cas, ils sont mis en œuvre sous forme de DLL mais leurs méthodes d'initialisation, leur chargement, leur accès et leurs fonctionnalités peuvent différer.
</p><p>Les filtres ont les limitations suivantes :
</p>
<ul><li>ils n'ont accès qu'au <a href="Header" title="Header">header</a> de la page HTML, pas au <a href="Hypertext_Markup_Language#Éléments_de_HTML" title="Hypertext Markup Language">body</a></li>
<li>ils se configurent pour un site, pas pour un répertoire virtuel</li>
<li>ils fonctionnent sur le mode synchrone et bloquent l'interface utilisateur si calcul long</li>
<li>ils ont accès à moins de fonctionnalités que les applications ISAPI</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Extensions">Extensions</h3></div>
<p>Les extensions ISAPI sont de vraies applications qui fonctionnent sur IIS. Ces applications ont accès à toutes les fonctionnalités proposées par IIS. Elles sont mises en œuvre sous forme de DLL et chargées sous contrôle d’IIS. Les clients web ont accès aux fonctionnalités de la même façon que s'ils avaient accès à une page HTML statique. L'accès à ISAPI se fait sous la forme d'un fichier, d'un répertoire ou d'un site.
</p>
<div class="mw-heading mw-heading3"><h3 id="Filtres">Filtres</h3></div>
<p>Les filtres ISAPI sont utilisés pour modifier ou améliorer les fonctionnalités offertes par défaut par IIS. Le <a href="Fichier_de_configuration" title="Fichier de configuration">fichier de configuration</a> d'IIS définit l'ordre d'exécution des filtres et le niveau (sites ou répertoires). Mis en œuvre sous forme de DLL, les filtres sont toujours chargés dans IIS en <a href="T%C3%A2che_de_fond" title="Tâche de fond">tâche de fond</a>. Ils examinent et modifient, si nécessaire, les données transitant par le <a href="Hypertext_Transfer_Protocol" title="Hypertext Transfer Protocol">protocole http</a>.
</p><p>Les tâches communes exécutées que gèrent les filtres ISAPI sont :
</p>
<ul><li>Changer le header et les URL demandés par le client (rewrite)</li>
<li>Contrôler le processus d'authentification par nom et le mot de passe</li>
<li>Modifier et analyser les requêtes après authentification réussie</li>
<li>Contrôler quel fichier est accessible aux URL ("access denied")</li>
<li>Contrôler les systèmes de <a href="Chiffrement" title="Chiffrement">chiffrement</a> et de compression.</li>
<li>Fermer la session, l'authentification, quand un client quitte le serveur</li>
<li>Maintenir des statistiques du serveur (liste des activités, du trafic, des pages demandées)</li></ul>
<div class="navbox-container" style="clear:both;">
</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de Microsoft</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2024-11-10" href="https://fr.wikipedia.org/wiki/?title=ISAPI&oldid=220170828">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>